package org.jctc.els.modules.biz.service.user;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import org.jctc.els.modules.biz.entity.User2;
import org.jctc.els.modules.biz.entity.user.User;
import org.springblade.core.log.exception.ServiceException;
import org.springblade.core.mp.base.BaseService;
import org.springblade.core.tool.utils.DigestUtil;

/**
 * <p>
 * 用户表 服务类
 * </p>
 *
 * @author lyh
 * @since 2021-02-26
 */
public interface IUserService extends BaseService<User> {


    /**
     * 查询用户信息
     * @param page
     * @param account
     * @param status
     * @return
     */
    IPage<User> selectUserPage(IPage<User> page, String account, String status,Long deptId);


    /**
     * 添加用户表
     *
     * @param user 用户表
     * @return int
     * @author lyh
     * @since 2021-02-26
     */
    boolean insert(User user);

    /**
     * 删除用户表
     *
     * @param id 主键
     * @return int
     * @author lyh
     * @since 2021-02-26
     */
    boolean remove(Long id);

    /**
     * 修改用户表
     *
     * @param user 用户表
     * @return int
     * @author lyh
     * @since 2021-02-26
     */
    boolean updateUser(User user);

    boolean updateUserInfo(User user);

    /**
     * 重置
     * @param id
     * @return
     */
    boolean resetPassword(Long id);

    /**
     * 启用
     * @param userId
     * @return
     */
	boolean enable(Long userId);

    /**
     * 禁用
     * @param userId
     * @return
     */
	boolean disabled(Long userId);

    /**
     * 查询专家列表
     */
    IPage<User> selectExpertListByPage(IPage<User> page);
    /**
     * 查询这个小组绑定的所有专家
     */
    IPage<User> selectBoundExpertsListByPage(IPage<User> page, String teamId);
    IPage<User> selectExpertsPage(IPage<User> page, String account, String status);

    boolean updatePassword(Long userId, String oldPassword, String newPassword, String newPassword1);

    IPage<User> selectSpecialPage(IPage<User> page, String account, String status,String deptId);

    IPage<User> selectDpetUserPage(IPage<User> page, String account, String status, Long deptId);
}
